package com.fowo.api.model.wms.order;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.fowo.api.common.validator.EnumsString;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/** 销售出库单(wms) 导入导出辅助模型 */
@Getter
@Setter
public class WmsOrderExcelPo {

  @NotNull(message = "销售出库单号不能为空")
  @Size(max = 50, message = "销售出库单号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "*销售出库单号")
  private String woNumber;

  @Size(max = 50, message = "系统单号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "系统单号")
  private String orderNumber;

  @Size(max = 50, message = "波次号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "波次号")
  private String waveOrder;

  @EnumsString(
    value = { "物流下单", "发货中", "已发货", "已删除", "已出库" },
    message = "状态的可用值为 “物流下单”, “发货中”, “已发货”, “已删除”, “已出库” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "状态")
  private String status;

  @Size(max = 50, message = "平台单号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "平台单号")
  private String platformOrderNo;

  @Size(max = 50, message = "标签长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "标签")
  private String tagNames;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "店铺")
  private String sidShopName;

  @ExcelIgnore
  @ExcelProperty(value = "店铺")
  private Long sid;

  @Size(max = 50, message = "站点名称长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "站点名称")
  private String siteText;

  @Size(max = 50, message = "平台名称长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "平台名称")
  private String platformName;

  @Size(max = 50, message = "出库时间长度不能超过20")
  @DateTimeFormat("yyyy年MM月dd日HH:mm:ss")
  @ExcelProperty(value = "出库时间")
  private java.util.Date deliveredAt;

  @Size(max = 50, message = "发货人长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货人")
  private String deliverer;

  @Size(max = 50, message = "国家长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "国家")
  private String targetCountry;

  @Size(max = 50, message = "收件人税号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "收件人税号")
  private String recipientTaxNo;

  @Size(max = 50, message = "运单号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "运单号")
  private String waybillNo;

  @Size(max = 50, message = "跟踪号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "跟踪号")
  private String trackingNo;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "仓库")
  private String widName;

  @ExcelIgnore
  @ExcelProperty(value = "仓库")
  private Long wid;

  @ExcelProperty(value = "预估运费")
  private java.math.BigDecimal logisticsEstimatedFreight;

  @ExcelProperty(value = "物流运费")
  private java.math.BigDecimal logisticsFreight;

  @Size(max = 50, message = "库存流水出库时间长度不能超过20")
  @DateTimeFormat("yyyy年MM月dd日HH:mm:ss")
  @ExcelProperty(value = "库存流水出库时间")
  private java.util.Date stockDeliveredAt;

  @Size(max = 50, message = "是否验货长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "是否验货")
  private String isCheck;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "是否称重")
  private String isWeigh;

  @Size(max = 50, message = "面单是否打印长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "面单是否打印")
  private String isSurfacePrint;

  @Size(max = 50, message = "订单是否打印长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订单是否打印")
  private String isorderPrint;

  @Size(max = 50, message = "包裹尺寸长长度不能超过20")
  @ExcelProperty(value = "包裹尺寸长")
  private java.math.BigDecimal pkgLength;

  @Size(max = 50, message = "包裹尺寸高长度不能超过20")
  @ExcelProperty(value = "包裹尺寸高")
  private java.math.BigDecimal pkgHeight;

  @ExcelProperty(value = "包裹实重")
  private java.math.BigDecimal pkgRealWeight;

  @Size(max = 50, message = "估算重量长度不能超过20")
  @ExcelProperty(value = "估算重量")
  private java.math.BigDecimal pkgWeight;

  @EnumsString(
    value = { "一单一件", "多品多件【原一单多件】", "单品多件" },
    message = "订单类型的可用值为 “一单一件”, “多品多件【原一单多件】”, “单品多件” 其中之一"
  )
  @Size(max = 50, message = "订单类型长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订单类型")
  private String orderType;

  @Size(max = 50, message = "收件人长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "收件人")
  private String recipient;

  @Size(max = 50, message = "电话长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "电话")
  private String phone;

  @Size(max = 50, message = "邮编长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "邮编")
  private String zipCode;

  @Size(max = 50, message = "收货地址长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "收货地址")
  private String address;

  @Size(max = 50, message = "订单金额长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订单金额")
  private String orderOriginAmount;

  @Size(max = 50, message = "发货时限长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货时限")
  private String deliverDeadline;

  @Size(max = 50, message = "客服备注长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "客服备注")
  private String orderCustomerServiceNotes;

  @Size(max = 50, message = "买家留言长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "买家留言")
  private String orderBuyerNotes;

  @Size(max = 50, message = "包裹体积长度不能超过20")
  @ExcelProperty(value = "包裹体积")
  private java.math.BigDecimal pkgVolume;

  @Size(max = 50, message = "加工单号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "加工单号")
  private String processSn;

  @Size(max = 50, message = "订单来源长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订单来源")
  private String orderFrom;

  @Size(max = 50, message = "批次号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "批次号")
  private String batchNo;

  @Size(max = 50, message = "拣货人长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "拣货人")
  private String picker;

  @EnumsString(
    value = {
      "待导入",
      "物流待下单",
      " 物流下单中",
      "下单异常",
      " 下单完成",
      "待海外仓下单",
      "海外仓下单中",
      "待导入国内物流",
      "物流取消中",
      "物流取消异常",
      "物流取消完成",
    },
    message = "物流下单状态的可用值为 “待导入”, “物流待下单”, “ 物流下单中”, “下单异常”, “ 下单完成”, “待海外仓下单”, “海外仓下单中”, “待导入国内物流”, “物流取消中”, “物流取消异常”, “物流取消完成” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "物流下单状态")
  private String logisticsStatus;

  @Size(max = 50, message = "物流下单消息长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "物流下单消息")
  private String logisticsMessage;

  @Size(max = 50, message = "物流服务商名称长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "物流服务商名称")
  private String logisticsProviderName;

  @Size(max = 50, message = "物流方式名称长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "物流方式名称")
  private String logisticsTypeName;

  @ExcelProperty(value = "包裹计费重")
  private java.math.BigDecimal pkgFeeWeight;

  @EnumsString(
    value = { "已操作", "未操作" },
    message = "是否操作库存的可用值为 “已操作”, “未操作” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "是否操作库存")
  private String isOperation;

  @Size(max = 50, message = "卖家邮箱长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "卖家邮箱")
  private String buyerEmail;
}
